// This file is part of TagSoup and is Copyright 2002-2008 by John Cowan.
//
// TagSoup is licensed under the Apache License,
// Version 2.0.  You may obtain a copy of this license at
// http://www.apache.org/licenses/LICENSE-2.0 .  You may also have
// additional legal rights not granted by this license.
//
// TagSoup is distributed in the hope that it will be useful, but
// unless required by applicable law or agreed to in writing, TagSoup
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
// OF ANY KIND, either express or implied; not even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// 
// 
// Interface to objects that translate InputStreams to Readers by auto-detection

package com.cbs.android.widget.fullhtmlview.tagsoup;

import java.io.InputStream;
import java.io.Reader;

/**
 * Classes which accept an InputStream and provide a Reader which figures
 * out the encoding of the InputStream and reads characters from it should
 * conform to this interface.
 *
 * @see InputStream
 * @see Reader
 */

public interface AutoDetector {

    /**
     * Given an InputStream, return a suitable Reader that understands
     * the presumed character encoding of that InputStream.
     * If bytes are consumed from the InputStream in the process, they
     * <i>must</i> be pushed back onto the InputStream so that they can be
     * reinterpreted as characters.
     *
     * @param i The InputStream
     * @return A Reader that reads from the InputStream
     */

    public Reader autoDetectingReader(InputStream i);

}
